package demo1;

/**
 * @program: java-generic
 * @description:  泛型类的定义
 *          T 泛型标识-类型形参
 *          创建对象的时候指定具体的数据类型
 * @author: bjc
 * @create: 2021-08-15 14:48
 */
public class Generic<T> {

    private T key;

    public Generic(T key) {
        this.key = key;
    }

    public T getKey() {
        return key;
    }

    public void setKey(T key) {
        this.key = key;
    }

    @Override
    public String toString() {
        return "Generic{" +
                "key=" + key +
                '}';
    }
}

class Main{
    public static void main(String[] args) {
        //泛型类在创建对象的时候，来指定操作的具体数据类型
        Generic<String> generic = new Generic<String>("abc");
        String key = generic.getKey();
        System.out.println(key);

        //泛型类在创建对象的时候，如果没有指定类型，将按照Object类型来操作
        //泛型不支持基本数据类型
        Generic<String> abc = new Generic<>("abc");
        System.out.println(abc.getKey());

        //同一泛型类，根据不同数据类型创建的对象，本质上是同一数据类型
        System.out.println(generic.getClass());
        System.out.println(abc.getClass());
        System.out.println(generic.getClass()==abc.getClass());
    }
}
